package clients

// 此文件，实现客户端的token.Service

import (
	"context"
	"fmt"

	"gitee.com/liuxiaowei123/vblog-01/vblog-01/vblog/token"
	"github.com/infraboard/mcube/client/rest"
)

type TokenClient struct {
	c *rest.RESTClient
}

// 登录接口(颁发Token)
// http client
// /api/vblog/v1/tokens/ -->  /api/vblog/v1  + tokens
// base url
func (c *TokenClient) Login(ctx context.Context, req *token.LoginRequest) (
	*token.Token, error) {
	tk := token.NewToken()
	// Post("/")中的"/" 指的是http://127.0.0.1:8070/api/vblog/v1/tokens，通过SetBaseURL+c.Group("tokens")来实现的
	// c.c.Post("/").Body(req).Do(ctx).Into(tk) 表示，向服务器发送一个登录请求，并将返回的 token 填充到 Token 对象中
	err := c.c.Post("/").Body(req).Do(ctx).Into(tk)
	if err != nil {
		return nil, err
	}
	return tk, nil
}

// 退出接口(销毁Token)
func (c *TokenClient) Logout(context.Context, *token.LogoutRequest) error {
	return nil
}

// 不需要对外提供api
func (c *TokenClient) ValiateToken(context.Context, *token.ValiateTokenRequest) (*token.Token, error) {
	return nil, fmt.Errorf("not impl")
}
